
package se.sll.service.catalogue.gui.api.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import javax.validation.Valid;
import org.codehaus.jackson.annotate.JsonAnyGetter;
import org.codehaus.jackson.annotate.JsonAnySetter;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonPropertyOrder;
import org.codehaus.jackson.map.annotate.JsonSerialize;


/**
 * A single User
 * 
 */
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
    "status",
    "role",
    "createdByHsaId",
    "sourceSystemHsaId",
    "realname",
    "email",
    "hsaId",
    "creationTime",
    "updatedTime",
    "lastLogin",
    "careUnits"
})
public class UserList {

    /**
     * 
     */
    @JsonProperty("status")
    private String status;
    /**
     * 
     */
    @JsonProperty("role")
    private String role;
    /**
     * 
     */
    @JsonProperty("createdByHsaId")
    private String createdByHsaId;
    /**
     * 
     */
    @JsonProperty("sourceSystemHsaId")
    private String sourceSystemHsaId;
    /**
     * 
     */
    @JsonProperty("realname")
    private String realname;
    /**
     * 
     */
    @JsonProperty("email")
    private String email;
    /**
     * 
     */
    @JsonProperty("hsaId")
    private String hsaId;
    /**
     * 
     */
    @JsonProperty("creationTime")
    private Date creationTime;
    /**
     * 
     */
    @JsonProperty("updatedTime")
    private Date updatedTime;
    /**
     * 
     */
    @JsonProperty("lastLogin")
    private Date lastLogin;
    /**
     * a collection of Care Unit References
     * 
     */
    @JsonProperty("careUnits")
    @Valid
    private List<CareUnit> careUnits = new ArrayList<CareUnit>();
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    /**
     * 
     * @return
     *     The status
     */
    @JsonProperty("status")
    public String getStatus() {
        return status;
    }

    /**
     * 
     * @param status
     *     The status
     */
    @JsonProperty("status")
    public void setStatus(String status) {
        this.status = status;
    }

    public UserList withStatus(String status) {
        this.status = status;
        return this;
    }

    /**
     * 
     * @return
     *     The role
     */
    @JsonProperty("role")
    public String getRole() {
        return role;
    }

    /**
     * 
     * @param role
     *     The role
     */
    @JsonProperty("role")
    public void setRole(String role) {
        this.role = role;
    }

    public UserList withRole(String role) {
        this.role = role;
        return this;
    }

    /**
     * 
     * @return
     *     The createdByHsaId
     */
    @JsonProperty("createdByHsaId")
    public String getCreatedByHsaId() {
        return createdByHsaId;
    }

    /**
     * 
     * @param createdByHsaId
     *     The createdByHsaId
     */
    @JsonProperty("createdByHsaId")
    public void setCreatedByHsaId(String createdByHsaId) {
        this.createdByHsaId = createdByHsaId;
    }

    public UserList withCreatedByHsaId(String createdByHsaId) {
        this.createdByHsaId = createdByHsaId;
        return this;
    }

    /**
     * 
     * @return
     *     The sourceSystemHsaId
     */
    @JsonProperty("sourceSystemHsaId")
    public String getSourceSystemHsaId() {
        return sourceSystemHsaId;
    }

    /**
     * 
     * @param sourceSystemHsaId
     *     The sourceSystemHsaId
     */
    @JsonProperty("sourceSystemHsaId")
    public void setSourceSystemHsaId(String sourceSystemHsaId) {
        this.sourceSystemHsaId = sourceSystemHsaId;
    }

    public UserList withSourceSystemHsaId(String sourceSystemHsaId) {
        this.sourceSystemHsaId = sourceSystemHsaId;
        return this;
    }

    /**
     * 
     * @return
     *     The realname
     */
    @JsonProperty("realname")
    public String getRealname() {
        return realname;
    }

    /**
     * 
     * @param realname
     *     The realname
     */
    @JsonProperty("realname")
    public void setRealname(String realname) {
        this.realname = realname;
    }

    public UserList withRealname(String realname) {
        this.realname = realname;
        return this;
    }

    /**
     * 
     * @return
     *     The email
     */
    @JsonProperty("email")
    public String getEmail() {
        return email;
    }

    /**
     * 
     * @param email
     *     The email
     */
    @JsonProperty("email")
    public void setEmail(String email) {
        this.email = email;
    }

    public UserList withEmail(String email) {
        this.email = email;
        return this;
    }

    /**
     * 
     * @return
     *     The hsaId
     */
    @JsonProperty("hsaId")
    public String getHsaId() {
        return hsaId;
    }

    /**
     * 
     * @param hsaId
     *     The hsaId
     */
    @JsonProperty("hsaId")
    public void setHsaId(String hsaId) {
        this.hsaId = hsaId;
    }

    public UserList withHsaId(String hsaId) {
        this.hsaId = hsaId;
        return this;
    }

    /**
     * 
     * @return
     *     The creationTime
     */
    @JsonProperty("creationTime")
    public Date getCreationTime() {
        return creationTime;
    }

    /**
     * 
     * @param creationTime
     *     The creationTime
     */
    @JsonProperty("creationTime")
    public void setCreationTime(Date creationTime) {
        this.creationTime = creationTime;
    }

    public UserList withCreationTime(Date creationTime) {
        this.creationTime = creationTime;
        return this;
    }

    /**
     * 
     * @return
     *     The updatedTime
     */
    @JsonProperty("updatedTime")
    public Date getUpdatedTime() {
        return updatedTime;
    }

    /**
     * 
     * @param updatedTime
     *     The updatedTime
     */
    @JsonProperty("updatedTime")
    public void setUpdatedTime(Date updatedTime) {
        this.updatedTime = updatedTime;
    }

    public UserList withUpdatedTime(Date updatedTime) {
        this.updatedTime = updatedTime;
        return this;
    }

    /**
     * 
     * @return
     *     The lastLogin
     */
    @JsonProperty("lastLogin")
    public Date getLastLogin() {
        return lastLogin;
    }

    /**
     * 
     * @param lastLogin
     *     The lastLogin
     */
    @JsonProperty("lastLogin")
    public void setLastLogin(Date lastLogin) {
        this.lastLogin = lastLogin;
    }

    public UserList withLastLogin(Date lastLogin) {
        this.lastLogin = lastLogin;
        return this;
    }

    /**
     * a collection of Care Unit References
     * 
     * @return
     *     The careUnits
     */
    @JsonProperty("careUnits")
    public List<CareUnit> getCareUnits() {
        return careUnits;
    }

    /**
     * a collection of Care Unit References
     * 
     * @param careUnits
     *     The careUnits
     */
    @JsonProperty("careUnits")
    public void setCareUnits(List<CareUnit> careUnits) {
        this.careUnits = careUnits;
    }

    public UserList withCareUnits(List<CareUnit> careUnits) {
        this.careUnits = careUnits;
        return this;
    }

    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }

    @JsonAnySetter
    public void setAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
    }

    public UserList withAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
        return this;
    }

}
